<?php
/* *
 * 功能：支付宝服务器异步通知页面
 * 版本：3.3
 * 日期：2012-07-23
 * 说明：
 * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。


 *************************页面功能说明*************************
 * 创建该页面文件时，请留心该页面文件中无任何HTML代码及空格。
 * 该页面不能在本机电脑测试，请到服务器上做测试。请确保外部可以访问该页面。
 * 该页面调试工具请使用写文本函数logResult，该函数已被默认关闭，见alipay_notify_class.php中的函数verifyNotify
 * 如果没有收到该页面返回的 success 信息，支付宝会在24小时内按一定的时间策略重发通知
 */

header("Content-type: text/html; charset=utf-8");
require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");
require_once('../../global.php');
require_once('sqinc/inc/common.inc.php');

//计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();

if($verify_result) {//验证成功
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//请在这里加上商户的业务逻辑程序代
	
	//——请根据您的业务逻辑来编写程序（以下代码仅作参考）——
    //获取支付宝的通知返回参数，可参考技术文档中服务器异步通知参数列表
    $out_trade_no	= $_POST['out_trade_no'];	    //获取订单号
    $trade_no		= $_POST['trade_no'];	    	//获取支付宝交易号
    $total_fee		= $_POST['total_fee'];			//获取总价格
	$paystate=1;
	if($_POST['trade_status'] == 'TRADE_FINISHED') {
		$orders=explode(",",$out_trade_no);
		$ordernum=count($orders);
		if($ordernum!=1){
			$order=$orders[0];
			foreach($orders as $value){
				if(checktrade($value,1,1)==1){
					if(checktrade($value,1)==1){
						if(!updatetrade($value,1,1)){
							$paystate=5;
						}
					}
					if(checkorder($value)){
						if(checkorder($value,1)){
							$tradeid=$db2->select(3,"tb_trade","tradeid",array("orderid"=>$db2->select(3,'tb_trade','orderid',array('tradeid'=>$value)),"tradeid[!]"=>$value));
							if(!updatetrade($order,1,0)){
								$paystate=6;
							}
						}
					}
				}else{
					$paystate=3;
				}
			}
		}else{
			$order=$out_trade_no;
			if(checktrade($order,1,1)==1){
				if(checktrade($order,1)==1){
					if(!updatetrade($order,1,1)){
						$paystate=5;
					}
				}
				if(checkorder($order)){
					if(checkorder($order,1)){
						$order=$db2->select(3,"tb_trade","tradeid",array("orderid"=>$db2->select(3,'tb_trade','orderid',array('tradeid'=>$order)),"tradeid[!]"=>$order));
						if(!updatetrade($order,1,0)){
							$paystate=6;
						}
					}
				}
			}else{
				$paystate=3;
			}
		}
    }else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
		$orders=explode(",",$out_trade_no);
		$ordernum=count($orders);
		if($ordernum!=1){
			$order=$orders[0];
			foreach($orders as $value){
				if(checktrade($value,1,1)==1){
					if(checktrade($value,1)==1){
						if(!updatetrade($value,1,1)){
							$paystate=5;
						}
					}
					if(checkorder($value)){
						if(checkorder($value,1)){
							$order=$db2->select(3,"tb_trade","tradeid",array("orderid"=>$db2->select(3,'tb_trade','orderid',array('tradeid'=>$value)),"tradeid[!]"=>$value));
							if(!updatetrade($order,1,0)){
								$paystate=6;
							}
						}
					}
				}else{
					$paystate=3;
				}
			}
		}else{
			$order=$out_trade_no;
			if(checktrade($order,1,1)==1){
				if(checktrade($order,1)==1){
					if(!updatetrade($order,1,1)){
						$paystate=5;
					}
				}
				if(checkorder($order)){
					if(checkorder($order,1)){
						$order=$db2->select(3,"tb_trade","tradeid",array("orderid"=>$db2->select(3,'tb_trade','orderid',array('tradeid'=>$order)),"tradeid[!]"=>$order));
						if(!updatetrade($order,1,0)){
							$paystate=6;
						}
					}
				}
			}else{
				$paystate=3;
			}
		}
	}else {
		//验证失败
		$paystate=2;
	}
}else{
	$paystate=4;
}
//banklog($_POST['out_trade_no'],1,$paystate,1,$_POST);
//exit('success');
if($paystate==1){	
	$value['title']='您的任性点交易订单：'.$id.' 付款成功';
	$value['orderid']=$order['tbid'];
	XingeApp::PushAccountAndroid(XG_ANDROID_ACCESS_ID, XG_ANDROID_SECRET_KEY, "付款通知",json_encode(array('title'=>$_POST['out_trade_no'])), 'rxd7');
	echo "success";
}else{
	echo "fail";
}
?>